/**
 * Created by JamesZhang on 2017/5/21.
 */
import React from 'react';
import ReactDom from "react-dom";


export default class Bundle extends React.Component{
    constructor(props, context){
        super();
        this.state = {
            // 需要加载的模块, 默认为null
            mod: null
        }
    }
    /***
     * 组件出现前, 就是dom还没有渲染到html里面时调用此函数
     * componentWillMount
     */
    componentWillMount(){
        this.load(this.props);
    }

    /***
     * 当组件传入的props发生变化时调用, 如: 父组件状态改变, 给子
     * 组传入了新的prop值时, 用于props变化后, 更新State.
     * @param nextProps
     */
    componentWillReceiveProps(nextProps){
        if(nextProps.load !== this.props.load){
            this.load(nextProps);
        }
    }

    /**
     * 自定义函数,
     * 用于加载模块
     */
    load(props) {
        this.setState({
            mod: null
        })
        props.load((mod) => {
            this.setState({
                // handle both es imports and cjs
                mod: mod.default ? mod.default : mod
            })
        })
    }
    render(){
        if(!this.state.mod){
            return false;
        }
        return this.props.children(this.state.mod);
    }
}
